package cn.bearspark.emoji.provider.dao.mapper;

import cn.bearspark.emoji.provider.dao.po.EmojiPO;
import cn.bearspark.emoji.provider.dao.po.ModuleEmojiPO;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;

import java.util.List;
import java.util.Set;

/**
 * 表情包模块的数据映射接口
 *
 * @author f
 */
@Mapper
public interface EmojiMapper {

    /**
     * 获取所有的表情包数据
     *
     * @return 表情包数据
     */
    @Select("SELECT emoji_id, emoji_url FROM t_emoji")
    List<EmojiPO> listAllEmoji();

    /**
     * 批量添加其它模块中使用的表情包 id
     *
     * @param moduleCode   模块的枚举值
     * @param moduleDataId 该数据的主键 id
     * @param emojiIdList  表情包的 id 集合
     */
    void insertEmojiList(int moduleCode, long moduleDataId, List<Long> emojiIdList);

    /**
     * 批量获取数据中使用的表情包集合
     *
     * @param moduleCode      模块的枚举值
     * @param moduleDataIdSet 数据的主键 id 集合
     * @return 数据中使用的表情包集合
     */
    List<ModuleEmojiPO> list(int moduleCode, Set<Long> moduleDataIdSet);

    /**
     * 删除指定模块下指定数据的所有表情包
     *
     * @param moduleCode   模块的枚举值
     * @param moduleDataId 数据的主键 id
     */
    @Delete("DELETE FROM t_module_emoji WHERE module_code = #{moduleCode} AND module_data_id = #{moduleDataId}")
    void delete(int moduleCode, long moduleDataId);
}
